<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <script src="../lib/vue.js"></script>
    </head>
<body>
    <div id="app">
        <h3 id="h3">{{ msg }}</h3>
        <input type="text" v-model="msg"/>   
        <input type="button" @click="change"/> 
    </div>

    <script>
        var vm = new Vue({
            el: '#app',
            data: { msg: 'hhh' },
            methods: {
                change:function(){
                    this.msg = 'aaa';
                }
            },
            directives: {},
            //--------------------------------------------创建阶段-----------------------------------------------------//

            // 实例被完全创建之前触发的函数
            beforeCreate() {
                // vm中的data、methods等数据还未初始化完成
            },
            // 实例创建完成后触发的函数 data和method都已经初始化完毕
            // 如果要调用methods中的方法 或者操作data中的数据 最早只能在created中操作
            created() {
                console.log(this.msg)
            },
            // Vue开始编辑模板 执行指令 在内存中生成一个编译号的最终模板字符串 然后把这个模板字符串渲染为内存中的dom 并没有挂载到页面上
            beforeMount() {
                // 此时页面中的元素的值还未渲染 只是模板
                console.log(document.getElementById("h3").innerText)
            },
            // 内存中的dom树 挂载到页面上 页面渲染完成 是实例创建的最后一个生命周期函数 此后组件进入运行阶段
            mounted() {
                console.log(document.getElementById("h3").innerText)
            },
            //------------------------------------------------运行阶段-----------------------------------------------------//

            //vm中的data发生改变时触发此函数  data中的数据是最新的  但还未更新到页面
            beforeUpdate(){  
                console.log(document.getElementById("h3").innerText)
                console.log("beforeUpdate执行了"+this.msg)
            },
            //vm中data改变后 触发此函数 页面也渲染完成
            updated(){
                console.log("updated执行了"+this.msg)
            },
            //------------------------------------------------销毁阶段-----------------------------------------------------//

            beforeDestory(){
                //此时vm中各项还处于可用状态
            },
            destoryed(){
                //此时组件被完全销毁
            }
        });
    </script>
    </body>

</html>